package cn.lili.modules.service;

import cn.lili.common.vo.PageVO;
import cn.lili.common.vo.ResultMessage;
import cn.lili.modules.operationcenter.entity.dos.OperationCenter;
import cn.lili.modules.operationcenter.entity.vos.OperationCenterSearchParams;
import cn.lili.modules.operationcenter.entity.vos.OperationCenterVo;
import cn.lili.modules.system.entity.dos.Region;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;

public interface OperationCenterService extends IService<OperationCenter> {
    /**
     * 根据用户ID获取运营中心信息
     * @param userId
     * @return
     */
    OperationCenter getOperationCenter(String userId);

    /**
     * 编辑运营中心
     * 用于后台编辑
     *
     */
    void edit(OperationCenter operationCenter);

    /**
     * 增加运营中心
     *
     */
    void add(OperationCenter operationCenter);

    /**
     * 分页查询运营中心
     *
     */
    Page<OperationCenterVo> findByConditionPage(OperationCenterSearchParams operationCenterSearchParams, PageVO page);

    /**
     * 根据ID获取运营中心信息
     * @param id
     * @return
     */
    OperationCenter getOperationCenterById(String id);

    /**
     * 根据省份ID获取运营中心信息
     * @param provinceId 省份ID
     * @return
     */
    OperationCenter getByAddressId (String provinceId);

    /**
     * 关闭运营中心
     * @param id 运营中心ID
     */
    void disable(String id);

    /**
     * 开启运营中心
     * @param id 运营中心ID
     */
    void enable(String id, String status);

    /**
     * 删除运营中心
     * @param id
     */
    void delete(String id);

    /**
     * 获取运营中心信息
     * @param id 运营中心ID
     */
    OperationCenter getById(String id);

    List<OperationCenter> select(String name);

    /**
     * 设置运营中心提现银行账户
     * @param operationCenter
     * @return
     */
    ResultMessage<OperationCenter> setBankAccountByOperationId(OperationCenter operationCenter, String uuid);

    /**
     * 发送验证码
     * @return
     */
    ResultMessage<Object> sendSMSVerificationCode(String uuid);

    /**
     * 根据proviceId list批量获取OperationCenter集合
     * @param provinceIdList
     * @return
     */
    List<OperationCenter> getOperationCenterListByProviceIds(List<String> provinceIdList);

    List<Region> getRegionByParentId();
}
